iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
自我挑戰組

前端基礎:HTML 和 CSS 的 30 天學習之旅系列 第 29

Day 29: 性能優化與 CSS 減重技巧

  • 分享至 

  • xImage
  •  

在網站性能優化中,CSS 的減重和優化非常關鍵。過大的 CSS 文件會導致頁面加載緩慢,特別是在移動設備上,可能嚴重影響用戶體驗。

簡化選擇器和規則

  • 減少不必要的選擇器層級:避免過度的選擇器嵌套。過深的選擇器層級會使 CSS 變得難以維護,並且降低性能。例如,這樣的嵌套應該避免:
    body div.container ul li a span {
      color: #000;
    }
    
    簡化後:
    .container a span {
      color: #000;
    }
    
    這樣不僅縮短了代碼,還提高了性能,因為瀏覽器解析選擇器的速度更快。

合併和精簡 CSS

  • 合併樣式規則:檢查是否有多個選擇器應用了相同的樣式規則,這樣的規則可以合併,減少重複的代碼。
    h1 {
      color: #333;
      font-size: 2em;
    }
    p {
      color: #333;
    }
    
    合併後:
    h1, p {
      color: #333;
    }
    h1 {
      font-size: 2em;
    }
    

移除未使用的 CSS

  • 使用工具檢查未使用的樣式:例如使用 PurgeCSSUnCSS 來清理未使用的 CSS 規則。這些工具會分析你的 HTML,然後自動刪除未用到的樣式。

壓縮 CSS 文件

  • 使用 CSS 壓縮工具:如 CSSNanoCleanCSS 可以將 CSS 文件壓縮,刪除空白符、換行和註釋,極大減少文件大小。例如:
    壓縮前:
    body {
      margin: 0;
      padding: 0;
      color: #333;
    }
    h1 {
      font-size: 2em;
    }
    
    壓縮後:
    body{margin:0;padding:0;color:#333}h1{font-size:2em}
    

使用 CSS 預處理器與變量

  • Sass 或 Less 的變量和混合:使用 CSS 預處理器(如 Sass 或 Less),可以讓樣式更模組化並減少重複。將重複的顏色、字體大小等提取為變量,這樣可以更容易管理和壓縮 CSS 代碼。
    $primary-color: #3498db;
    
    body {
      color: $primary-color;
    }
    a {
      color: $primary-color;
    }
    

CSS 加載優化

  • 非同步加載 CSS:使用 <link rel="preload"> 或動態載入 CSS,可以優化 CSS 加載過程,讓首屏加載更快。
    <link rel="preload" href="style.css" as="style">
    <link rel="stylesheet" href="style.css">
    

使用 CDN 和 Cache

  • CDN 交付與快取:將 CSS 文件存儲在 CDN 上,並設置適當的快取策略。這樣能夠確保用戶訪問網站時獲取到的是快取中的文件,減少重複加載。

避免使用臃腫的 CSS 框架

  • 選擇輕量級框架或庫:如果你使用 CSS 框架,應該考慮選擇輕量級的框架,如 Bulma 或 Tailwind,並確保只引入所需的部分。這樣可以避免整個框架文件的過度加載。

媒體查詢與條件加載

  • 按需加載樣式:將不同裝置上的樣式分成多個 CSS 文件,使用媒體查詢來控制不同裝置或螢幕尺寸下的樣式加載。例如:
    <link rel="stylesheet" media="screen and (min-width: 768px)" href="desktop.css">
    <link rel="stylesheet" media="screen and (max-width: 767px)" href="mobile.css">
    

總結:

優化 CSS 是提升網站性能的重要步驟之一。通過簡化選擇器、合併規則、移除未使用的 CSS 以及壓縮文件,能夠大幅減小 CSS 文件的體積,減少網絡傳輸時間。此外,使用預處理器、CDN、媒體查詢等技術手段,可以讓 CSS 更加高效和適應不同裝置的需求。


上一篇
Day 28: 瀏覽器相容性與 CSS 前綴
下一篇
Day 30: 學習總結與未來方向
系列文
前端基礎:HTML 和 CSS 的 30 天學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言